perm filename GAME.LAP[206,JMC]1 blob sn#072128 filedate 1973-11-14 generic text, type T, neo UTF8
(DEFPROP GAMEFNS (GAMEFNS VALMAX VALMAXLIS VALMIN VALMINLIS RECTIFY COMMONTAIL COMMONHEAD) VALUE) 

(LAP VALMAX SUBR) 
       (PUSH P 1) 
       (PUSH P 2) 
       (PUSH P 3) 
       (CALL 1 (E RECTIFY) S) 
       (MOVE 3 0 P) 
       (MOVE 2 -1 P) 
       (CALL 3 (E TER) S) 
       (JUMPE 1 TAG2) 
       (HLRZ@ 1 0 P) 
       (PUSH P 1) 
       (HLRZ@ 1 -2 P) 
       (PUSH P 1) 
       (MOVE 1 -4 P) 
       (CALL 1 (E RECTIFY) S) 
       (MOVE 3 -2 P) 
       (MOVE 2 -3 P) 
       (CALL 3 (E IMVAL) S) 
       (MOVE 2 -1 P) 
       (CALL 2 (E *MIN) S) 
       (POP P 2) 
       (CALL 2 (E *MAX) S) 
       (MOVE 2 -3 P) 
       (CALL 2 (E CONS) S) 
       (SUB P (C 1 0 1 0)) 
       (JRST 0 TAG1) 
 TAG2  (MOVE 1 -2 P) 
       (CALL 1 (E RECTIFY) S) 
       (MOVE 3 0 P) 
       (MOVE 2 -1 P) 
       (CALL 3 (E SUCCESSORS) S) 
       (MOVE 3 0 P) 
       (MOVE 2 -1 P) 
       (CALL 3 (E VALMAXLIS) S) 
 TAG1  (SUB P (C 3 0 3 0)) 
       (POPJ P) 
       NIL 

(LAP VALMAXLIS SUBR) 
       (PUSH P 1) 
       (PUSH P 2) 
       (PUSH P 3) 
       (JUMPN 1 TAG2) 
       (MOVE 1 2) 
       (JRST 0 TAG1) 
 TAG2  (MOVE 3 0 P) 
       (MOVE 2 -1 P) 
       (HLRZ@ 1 -2 P) 
       (CALL 3 (E VALMIN) S) 
       (PUSH P 1) 
       (HLRZ@ 2 -1 P) 
       (HLRZ@ 1 1) 
       (CALL 2 (E *LESS) S) 
       (JUMPN 1 TAG7) 
       (MOVE 1 -1 P) 
       (JRST 0 TAG6) 
 TAG7  (PUSH P -3 P) 
       (HRRZ@ 1 0 P) 
       (PUSH P 1) 
       (HLRZ@ 2 -2 P) 
       (HLRZ@ 1 -4 P) 
       (CALL 2 (E *LESS) S) 
       (JUMPN 1 TAG14) 
       (MOVE 2 -4 P) 
       (JRST 0 TAG13) 
 TAG14 (MOVE 2 -2 P) 
 TAG13 (MOVE 3 -3 P) 
       (POP P 1) 
       (CALL 3 (E VALMAXLIS) S) 
       (SUB P (C 1 0 1 0)) 
 TAG6  (SUB P (C 1 0 1 0)) 
 TAG1  (SUB P (C 3 0 3 0)) 
       (POPJ P) 
       NIL 

(LAP VALMIN SUBR) 
       (PUSH P 1) 
       (PUSH P 2) 
       (PUSH P 3) 
       (CALL 1 (E RECTIFY) S) 
       (MOVE 3 0 P) 
       (MOVE 2 -1 P) 
       (CALL 3 (E TER) S) 
       (JUMPE 1 TAG2) 
       (HLRZ@ 1 0 P) 
       (PUSH P 1) 
       (HLRZ@ 1 -2 P) 
       (PUSH P 1) 
       (MOVE 1 -4 P) 
       (CALL 1 (E RECTIFY) S) 
       (MOVE 3 -2 P) 
       (MOVE 2 -3 P) 
       (CALL 3 (E IMVAL) S) 
       (MOVE 2 -1 P) 
       (CALL 2 (E *MIN) S) 
       (POP P 2) 
       (CALL 2 (E *MAX) S) 
       (MOVE 2 -3 P) 
       (CALL 2 (E CONS) S) 
       (SUB P (C 1 0 1 0)) 
       (JRST 0 TAG1) 
 TAG2  (MOVE 1 -2 P) 
       (CALL 1 (E RECTIFY) S) 
       (MOVE 3 0 P) 
       (MOVE 2 -1 P) 
       (CALL 3 (E SUCCESSORS) S) 
       (MOVE 3 0 P) 
       (MOVE 2 -1 P) 
       (CALL 3 (E VALMINLIS) S) 
 TAG1  (SUB P (C 3 0 3 0)) 
       (POPJ P) 
       NIL 

(LAP VALMINLIS SUBR) 
       (PUSH P 1) 
       (PUSH P 2) 
       (PUSH P 3) 
       (JUMPN 1 TAG2) 
       (MOVE 1 3) 
       (JRST 0 TAG1) 
 TAG2  (MOVE 3 0 P) 
       (MOVE 2 -1 P) 
       (HLRZ@ 1 -2 P) 
       (CALL 3 (E VALMAX) S) 
       (PUSH P 1) 
       (HLRZ@ 2 -2 P) 
       (HLRZ@ 1 1) 
       (CALL 2 (E *GREAT) S) 
       (JUMPN 1 TAG7) 
       (MOVE 1 -2 P) 
       (JRST 0 TAG6) 
 TAG7  (PUSH P -2 P) 
       (PUSH P -4 P) 
       (HRRZ@ 1 0 P) 
       (PUSH P 1) 
       (HLRZ@ 2 -3 P) 
       (HLRZ@ 1 -4 P) 
       (CALL 2 (E *GREAT) S) 
       (JUMPN 1 TAG14) 
       (MOVE 3 -4 P) 
       (JRST 0 TAG13) 
 TAG14 (MOVE 3 -3 P) 
 TAG13 (MOVE 2 -2 P) 
       (POP P 1) 
       (CALL 3 (E VALMINLIS) S) 
       (SUB P (C 2 0 2 0)) 
 TAG6  (SUB P (C 1 0 1 0)) 
 TAG1  (SUB P (C 3 0 3 0)) 
       (POPJ P) 
       NIL 

(LAP RECTIFY SUBR) 
       (PUSH P 1) 
       (MOVE 2 (SPECIAL P1) S) 
       (CALL 2 (E COMMONTAIL) S) 
       (PUSH P 1) 
       (PUSH P (C 0 0 (QUOTE NIL) 0)) 
 TAG1  (MOVE 2 (SPECIAL P1) S) 
       (MOVE 1 -1 P) 
       (CALL 2 (E EQUAL) S) 
       (JUMPN 1 TAG2) 
       (CALL 0 (E REVERT) S) 
       (JRST 0 TAG1) 
 TAG2  (MOVE 2 (SPECIAL P1) S) 
       (MOVE 1 -2 P) 
       (CALL 2 (E LISTSUBT) S) 
       (MOVEM 1 0 P) 
 TAG3  (MOVE 1 0 P) 
       (JUMPN 1 TAG11) 
       (MOVE 1 -2 P) 
       (JRST 0 TAG4) 
 TAG11 (HLRZ@ 1 0 P) 
       (CALL 1 (E UPDATE) S) 
       (HRRZ@ 1 0 P) 
       (MOVEM 1 0 P) 
       (JRST 0 TAG3) 
 TAG4  (SUB P (C 3 0 3 0)) 
       (POPJ P) 
       NIL 

(LAP COMMONTAIL SUBR) 
       (PUSH P 2) 
       (CALL 1 (E REVERSE) S) 
       (EXCH 1 0 P) 
       (CALL 1 (E REVERSE) S) 
       (MOVE 2 1) 
       (POP P 1) 
       (CALL 2 (E COMMONHEAD) S) 
       (JCALL 1 (E REVERSE) S) 
       NIL 

(LAP COMMONHEAD SUBR) 
       (PUSH P 1) 
       (PUSH P 2) 
       (JUMPE 1 TAG4) 
       (JUMPE 2 TAG4) 
       (HLRZ@ 2 2) 
       (HLRZ@ 1 1) 
       (CALL 2 (E EQUAL) S) 
       (JUMPN 1 TAG2) 
 TAG4  (MOVEI 1 (QUOTE NIL)) 
       (JRST 0 TAG1) 
 TAG2  (HLRZ@ 1 -1 P) 
       (HRRZ@ 2 0 P) 
       (PUSH P 1) 
       (HRRZ@ 1 -2 P) 
       (CALL 2 (E COMMONHEAD) S) 
       (POP P 2) 
       (CALL 2 (E XCONS) S) 
 TAG1  (SUB P (C 2 0 2 0)) 
       (POPJ P) 
       NIL